/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.monopoly.comunicazione;

/**
 *
 * @author Administrator
 */
public class DistributoreMessaggi extends Thread {

    @Override
    public void run() {
        try {
            Thread.sleep(10);
            //Controllo se vi sono processi morti, se si devo togliere l'utente dalle stanze!!
            for (ThreadCliente tc : VariabiliGlobali.clienti) {
                if (tc.isAlive() == false) {
                    VariabiliGlobali.clienti.remove(tc);
                }
            }
            //Ora controlle se vi sono messaggi da inviare
            for (;;) {
                Messaggio m = VariabiliGlobali.messaggi.getProssimoMessaggioDaInviare();
                if (m != null) {
                    for (Utente u : m.getDestinatari()) {
                        for (ThreadCliente tc : VariabiliGlobali.clienti) {
                            if (u == tc.getUtente()) {

                                //Devo controllare se sta inviando...
                                for (;;) {
                                    if (tc.isDaInviare() == false) {
                                        tc.setMessaggio(m);
                                        tc.setDaInviare(true);
                                        System.out.println("---> DA INVIARE");
                                        m.stampa();
                                        break;
                                    }
                                    Thread.sleep(1);
                                }
                            }
                        }
                    }
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}
